/*
 * Copyright 2010-2012 Susanta Tewari. <freecode4susant@users.sourceforge.net>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package provider.impl.genomemap.me;

import commons.core.ModelEstimator;
import commons.provider.ProviderException;
import commons.provider.impl.BaseDataBasedProviderImpl.BaseModelEstimatorProviderImpl;
import genomemap.data.KSA00Data;
import genomemap.data.TAB08Data;
import genomemap.model.KSA00;
import genomemap.model.TAB08;
import genomemap.provider.Providers;

/**
 * Class description
 *
 *
 * @version        Enter version here..., 12/10/12
 * @author         Susanta Tewari
 */
public class MEProviderImpls {

    /**
     * Class description
     *
     *
     * @version        Enter version here..., 12/10/12
     * @author         Susanta Tewari
     */
    public static class KSA00MEProviderImpl
            extends BaseModelEstimatorProviderImpl<KSA00, KSA00Data>
            implements Providers.KSA00EstimatorProvider {

        /**
         * Method description
         *
         *
         * @param data description
         *
         * @return description
         *
         * @throws ProviderException description
         */
        @Override
        protected ModelEstimator<KSA00, KSA00Data, KSA00Data, ?> createImpl(final KSA00Data data)
                throws ProviderException {
            return new KSA00Estimator(data);
        }

        /**
         * Method description
         *
         *
         * @return description
         */
        @Override
        public Class<KSA00> getModelClass() {
            return KSA00.class;
        }

        /**
         * Method description
         *
         *
         * @return description
         */
        @Override
        public Class<KSA00Data> getDataClass() {
            return KSA00Data.class;
        }
    }

    /**
     * Class description
     *
     *
     * @version        Enter version here..., 12/10/12
     * @author         Susanta Tewari
     */
    public static class TAB08MEProviderImplIntervalMLE
            extends BaseModelEstimatorProviderImpl<TAB08, TAB08Data>
            implements Providers.TAB08EstimatorProvider {

        /**
         * Method description
         *
         *
         * @param data description
         *
         * @return description
         *
         * @throws ProviderException description
         */
        @Override
        protected ModelEstimator<TAB08, TAB08Data, TAB08Data, ?> createImpl(final TAB08Data data)
                throws ProviderException {
            return new TAB08IntervalMLE(data);
        }

        /**
         * Method description
         *
         *
         * @return description
         */
        @Override
        public Class<TAB08> getModelClass() {
            return TAB08.class;
        }

        /**
         * Method description
         *
         *
         * @return description
         */
        @Override
        public Class<TAB08Data> getDataClass() {
            return TAB08Data.class;
        }
    }
}
